<!DOCTYPE html>
<html lang="en-US">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>深入理解Java虚拟机 | whoway</title>
    <meta name="description" content="Personal Blog Website">
    <link rel="icon" href="/images/photo.jpg">
  <link rel="manifest" href="/images/photo.jpg">
  <link rel="apple-touch-icon" href="/images/photo.jpg">
  <meta http-quiv="pragma" cotent="no-cache">
  <meta http-quiv="pragma" cotent="no-cache,must-revalidate">
  <meta http-quiv="expires" cotent="0">
    
    <link rel="preload" href="/assets/css/0.styles.0dbae9ec.css" as="style"><link rel="preload" href="/assets/js/app.c70e21ad.js" as="script"><link rel="preload" href="/assets/js/35.dbe688bb.js" as="script"><link rel="prefetch" href="/assets/js/10.15222a53.js"><link rel="prefetch" href="/assets/js/100.7e0e5a86.js"><link rel="prefetch" href="/assets/js/101.efd59f25.js"><link rel="prefetch" href="/assets/js/102.dfbdc06c.js"><link rel="prefetch" href="/assets/js/103.d3ab2109.js"><link rel="prefetch" href="/assets/js/104.117957ef.js"><link rel="prefetch" href="/assets/js/105.046e8ff3.js"><link rel="prefetch" href="/assets/js/106.aebdc17d.js"><link rel="prefetch" href="/assets/js/107.248733c2.js"><link rel="prefetch" href="/assets/js/108.a2fecadc.js"><link rel="prefetch" href="/assets/js/109.35196857.js"><link rel="prefetch" href="/assets/js/11.770642f2.js"><link rel="prefetch" href="/assets/js/110.cf3d973c.js"><link rel="prefetch" href="/assets/js/111.f985889a.js"><link rel="prefetch" href="/assets/js/112.ad614f41.js"><link rel="prefetch" href="/assets/js/113.f666653c.js"><link rel="prefetch" href="/assets/js/114.c6c3f384.js"><link rel="prefetch" href="/assets/js/115.e51d3c2f.js"><link rel="prefetch" href="/assets/js/116.4f4b39f5.js"><link rel="prefetch" href="/assets/js/117.99352e11.js"><link rel="prefetch" href="/assets/js/118.c6ae6572.js"><link rel="prefetch" href="/assets/js/119.4ccbe778.js"><link rel="prefetch" href="/assets/js/12.042a92ff.js"><link rel="prefetch" href="/assets/js/120.edda1c4f.js"><link rel="prefetch" href="/assets/js/121.30a638ed.js"><link rel="prefetch" href="/assets/js/122.6efcefb1.js"><link rel="prefetch" href="/assets/js/123.91e6665b.js"><link rel="prefetch" href="/assets/js/124.f27e3d7e.js"><link rel="prefetch" href="/assets/js/125.c75712d5.js"><link rel="prefetch" href="/assets/js/126.ed756cce.js"><link rel="prefetch" href="/assets/js/127.2f06c74c.js"><link rel="prefetch" href="/assets/js/128.d5f6f30e.js"><link rel="prefetch" href="/assets/js/129.508b7eed.js"><link rel="prefetch" href="/assets/js/13.b5280c37.js"><link rel="prefetch" href="/assets/js/130.dc05f9aa.js"><link rel="prefetch" href="/assets/js/131.e0ba69b1.js"><link rel="prefetch" href="/assets/js/132.d79bcaa4.js"><link rel="prefetch" href="/assets/js/133.34acc01a.js"><link rel="prefetch" href="/assets/js/134.dabf64d5.js"><link rel="prefetch" href="/assets/js/135.ad90c915.js"><link rel="prefetch" href="/assets/js/136.dbb0074f.js"><link rel="prefetch" href="/assets/js/137.284ad365.js"><link rel="prefetch" href="/assets/js/138.a4b6856f.js"><link rel="prefetch" href="/assets/js/139.c9c1e20f.js"><link rel="prefetch" href="/assets/js/14.df02ba38.js"><link rel="prefetch" href="/assets/js/140.8b0a9269.js"><link rel="prefetch" href="/assets/js/141.9c7759c5.js"><link rel="prefetch" href="/assets/js/142.a4201a82.js"><link rel="prefetch" href="/assets/js/143.d7da6e8c.js"><link rel="prefetch" href="/assets/js/144.5e48e65d.js"><link rel="prefetch" href="/assets/js/145.a0e2633c.js"><link rel="prefetch" href="/assets/js/146.3c775f9b.js"><link rel="prefetch" href="/assets/js/147.22add89a.js"><link rel="prefetch" href="/assets/js/148.cfde1009.js"><link rel="prefetch" href="/assets/js/149.ffc835b5.js"><link rel="prefetch" href="/assets/js/15.fbdfc4ee.js"><link rel="prefetch" href="/assets/js/150.406c4b20.js"><link rel="prefetch" href="/assets/js/151.b2040eea.js"><link rel="prefetch" href="/assets/js/152.7bc65661.js"><link rel="prefetch" href="/assets/js/153.1d7c65e3.js"><link rel="prefetch" href="/assets/js/154.1309de49.js"><link rel="prefetch" href="/assets/js/155.81d3ee1f.js"><link rel="prefetch" href="/assets/js/156.154a4ef2.js"><link rel="prefetch" href="/assets/js/16.e5eb6147.js"><link rel="prefetch" href="/assets/js/17.57853c4a.js"><link rel="prefetch" href="/assets/js/18.cb9d7518.js"><link rel="prefetch" href="/assets/js/19.f354dc47.js"><link rel="prefetch" href="/assets/js/2.570d8a23.js"><link rel="prefetch" href="/assets/js/20.b5af7fad.js"><link rel="prefetch" href="/assets/js/21.0b1928fe.js"><link rel="prefetch" href="/assets/js/22.f78666de.js"><link rel="prefetch" href="/assets/js/23.29c3f366.js"><link rel="prefetch" href="/assets/js/24.6f596516.js"><link rel="prefetch" href="/assets/js/25.14067b60.js"><link rel="prefetch" href="/assets/js/26.74ba4989.js"><link rel="prefetch" href="/assets/js/27.13d60edd.js"><link rel="prefetch" href="/assets/js/28.9523cb32.js"><link rel="prefetch" href="/assets/js/29.8ec842e9.js"><link rel="prefetch" href="/assets/js/3.3fb3d2e0.js"><link rel="prefetch" href="/assets/js/30.805597a8.js"><link rel="prefetch" href="/assets/js/31.831b195d.js"><link rel="prefetch" href="/assets/js/32.063c672d.js"><link rel="prefetch" href="/assets/js/33.6d93fac3.js"><link rel="prefetch" href="/assets/js/34.56e8263c.js"><link rel="prefetch" href="/assets/js/36.dc5af2c1.js"><link rel="prefetch" href="/assets/js/37.0a7494f6.js"><link rel="prefetch" href="/assets/js/38.fe4fc171.js"><link rel="prefetch" href="/assets/js/39.f5ed5e92.js"><link rel="prefetch" href="/assets/js/4.2c405ec8.js"><link rel="prefetch" href="/assets/js/40.fe7e2714.js"><link rel="prefetch" href="/assets/js/41.30b0811d.js"><link rel="prefetch" href="/assets/js/42.76f52d62.js"><link rel="prefetch" href="/assets/js/43.e7bb0817.js"><link rel="prefetch" href="/assets/js/44.ead0e883.js"><link rel="prefetch" href="/assets/js/45.235df046.js"><link rel="prefetch" href="/assets/js/46.5f09e829.js"><link rel="prefetch" href="/assets/js/47.67116354.js"><link rel="prefetch" href="/assets/js/48.31f34543.js"><link rel="prefetch" href="/assets/js/49.10b5ebba.js"><link rel="prefetch" href="/assets/js/5.6f47322c.js"><link rel="prefetch" href="/assets/js/50.c0f0b7f1.js"><link rel="prefetch" href="/assets/js/51.5143f3bf.js"><link rel="prefetch" href="/assets/js/52.eeddfd48.js"><link rel="prefetch" href="/assets/js/53.eb790db5.js"><link rel="prefetch" href="/assets/js/54.8fe5421c.js"><link rel="prefetch" href="/assets/js/55.d8f9004b.js"><link rel="prefetch" href="/assets/js/56.62ac9b92.js"><link rel="prefetch" href="/assets/js/57.a9caec0d.js"><link rel="prefetch" href="/assets/js/58.f93fc522.js"><link rel="prefetch" href="/assets/js/59.a81a03aa.js"><link rel="prefetch" href="/assets/js/6.8c2ea393.js"><link rel="prefetch" href="/assets/js/60.ab782775.js"><link rel="prefetch" href="/assets/js/61.6dd12daf.js"><link rel="prefetch" href="/assets/js/62.76f4b01f.js"><link rel="prefetch" href="/assets/js/63.6f8a4742.js"><link rel="prefetch" href="/assets/js/64.6f8bb1fa.js"><link rel="prefetch" href="/assets/js/65.4120a44b.js"><link rel="prefetch" href="/assets/js/66.360c2d2b.js"><link rel="prefetch" href="/assets/js/67.26f84d32.js"><link rel="prefetch" href="/assets/js/68.68f45e5e.js"><link rel="prefetch" href="/assets/js/69.e311eb56.js"><link rel="prefetch" href="/assets/js/7.6762b2d7.js"><link rel="prefetch" href="/assets/js/70.cea82674.js"><link rel="prefetch" href="/assets/js/71.783ddcf7.js"><link rel="prefetch" href="/assets/js/72.e5467385.js"><link rel="prefetch" href="/assets/js/73.b8fb681b.js"><link rel="prefetch" href="/assets/js/74.1bae37db.js"><link rel="prefetch" href="/assets/js/75.024387e5.js"><link rel="prefetch" href="/assets/js/76.a8e53010.js"><link rel="prefetch" href="/assets/js/77.8c55500a.js"><link rel="prefetch" href="/assets/js/78.7ce90bf5.js"><link rel="prefetch" href="/assets/js/79.ef71713f.js"><link rel="prefetch" href="/assets/js/8.788a6364.js"><link rel="prefetch" href="/assets/js/80.acad589d.js"><link rel="prefetch" href="/assets/js/81.02670d10.js"><link rel="prefetch" href="/assets/js/82.53b7b1ac.js"><link rel="prefetch" href="/assets/js/83.99eb8581.js"><link rel="prefetch" href="/assets/js/84.d1535ce3.js"><link rel="prefetch" href="/assets/js/85.fe2b7de9.js"><link rel="prefetch" href="/assets/js/86.41850272.js"><link rel="prefetch" href="/assets/js/87.1cdc6df9.js"><link rel="prefetch" href="/assets/js/88.01bf3461.js"><link rel="prefetch" href="/assets/js/89.17c69819.js"><link rel="prefetch" href="/assets/js/9.3813842d.js"><link rel="prefetch" href="/assets/js/90.f6ae7e35.js"><link rel="prefetch" href="/assets/js/91.507bc284.js"><link rel="prefetch" href="/assets/js/92.90551782.js"><link rel="prefetch" href="/assets/js/93.dc442d78.js"><link rel="prefetch" href="/assets/js/94.315f4e94.js"><link rel="prefetch" href="/assets/js/95.ccd6c6bf.js"><link rel="prefetch" href="/assets/js/96.0c6d89d0.js"><link rel="prefetch" href="/assets/js/97.1a9f10a9.js"><link rel="prefetch" href="/assets/js/98.43be3caa.js"><link rel="prefetch" href="/assets/js/99.54c8207b.js">
    <link rel="stylesheet" href="/assets/css/0.styles.0dbae9ec.css">
  </head>
  <body>
    <div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="sidebar-button"><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" role="img" viewBox="0 0 448 512" class="icon"><path fill="currentColor" d="M436 124H12c-6.627 0-12-5.373-12-12V80c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12zm0 160H12c-6.627 0-12-5.373-12-12v-32c0-6.627 5.373-12 12-12h424c6.627 0 12 5.373 12 12v32c0 6.627-5.373 12-12 12z"></path></svg></div> <a href="/" class="home-link router-link-active"><!----> <span class="site-name">whoway</span></a> <div class="links" style="max-width:nullpx;"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🎓Coding</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/00.Coding/TheBeautyOfProgramming/" class="nav-link">🔖编程之美题解</a></li><li class="dropdown-item"><!----> <a href="/00.Coding/CodeWarehouse/" class="nav-link">🔖代码意识流</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🚀语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/01.Language/Overview/" class="nav-link">🔖概述</a></li><li class="dropdown-item"><!----> <a href="/01.Language/C/" class="nav-link">⭐️C</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Cpp/" class="nav-link">🚀C++</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Java/" class="nav-link router-link-active">☕️Java</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Python/" class="nav-link">🧩Python3</a></li></ul></div></div><div class="nav-item"><a href="/02.Hardware/" class="nav-link">✔️硬件基础</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⭐️软件基础</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/03.Software/01.DataStructureAndAlgorithm/" class="nav-link">🐾数据结构和算法</a></li><li class="dropdown-item"><!----> <a href="/03.Software/02.OS/" class="nav-link">💻操作系统</a></li><li class="dropdown-item"><!----> <a href="/03.Software/03.Net/" class="nav-link">☁️计算机网络</a></li><li class="dropdown-item"><!----> <a href="/03.Software/04.SE/" class="nav-link">✅软件工程</a></li></ul></div></div><div class="nav-item"><a href="/04.Database/" class="nav-link">🎨数据库</a></div><div class="nav-item"><a href="/05.Engineer/" class="nav-link">🔖学术/工程</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⚙️工具</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/06.Tools/01.employment/" class="nav-link">🔖求职</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/02.efficiency/" class="nav-link">🚀效能</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/03.windows/" class="nav-link">⚙️Windows</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/04.design/" class="nav-link">🧩设计</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/05.linux/" class="nav-link">🐉Linux</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/whoway" target="_blank" rel="noopener noreferrer" class="nav-link external">
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav></div></header> <div class="sidebar-mask"></div> <div class="sidebar"><nav class="nav-links"><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🎓Coding</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/00.Coding/TheBeautyOfProgramming/" class="nav-link">🔖编程之美题解</a></li><li class="dropdown-item"><!----> <a href="/00.Coding/CodeWarehouse/" class="nav-link">🔖代码意识流</a></li></ul></div></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">🚀语言</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/01.Language/Overview/" class="nav-link">🔖概述</a></li><li class="dropdown-item"><!----> <a href="/01.Language/C/" class="nav-link">⭐️C</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Cpp/" class="nav-link">🚀C++</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Java/" class="nav-link router-link-active">☕️Java</a></li><li class="dropdown-item"><!----> <a href="/01.Language/Python/" class="nav-link">🧩Python3</a></li></ul></div></div><div class="nav-item"><a href="/02.Hardware/" class="nav-link">✔️硬件基础</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⭐️软件基础</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/03.Software/01.DataStructureAndAlgorithm/" class="nav-link">🐾数据结构和算法</a></li><li class="dropdown-item"><!----> <a href="/03.Software/02.OS/" class="nav-link">💻操作系统</a></li><li class="dropdown-item"><!----> <a href="/03.Software/03.Net/" class="nav-link">☁️计算机网络</a></li><li class="dropdown-item"><!----> <a href="/03.Software/04.SE/" class="nav-link">✅软件工程</a></li></ul></div></div><div class="nav-item"><a href="/04.Database/" class="nav-link">🎨数据库</a></div><div class="nav-item"><a href="/05.Engineer/" class="nav-link">🔖学术/工程</a></div><div class="nav-item"><div class="dropdown-wrapper"><a class="dropdown-title"><span class="title">⚙️工具</span> <span class="arrow right"></span></a> <ul class="nav-dropdown" style="display:none;"><li class="dropdown-item"><!----> <a href="/06.Tools/01.employment/" class="nav-link">🔖求职</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/02.efficiency/" class="nav-link">🚀效能</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/03.windows/" class="nav-link">⚙️Windows</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/04.design/" class="nav-link">🧩设计</a></li><li class="dropdown-item"><!----> <a href="/06.Tools/05.linux/" class="nav-link">🐉Linux</a></li></ul></div></div><div class="nav-item"><a href="https://github.com/whoway" target="_blank" rel="noopener noreferrer" class="nav-link external">
  GitHub
  <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg></a></div> <!----></nav>  <ul class="sidebar-links"><li><div class="sidebar-group first"><p class="sidebar-heading open"><span>深入理解Java虚拟机</span> <!----></p> <ul class="sidebar-group-items"><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#目录" class="sidebar-link">目录</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#前言" class="sidebar-link">前言</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅第一部分-走近java" class="sidebar-link">✅第一部分 走近Java</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第1章走近java" class="sidebar-link">第1章走近Java</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-1概述" class="sidebar-link">1.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-2java技术体系" class="sidebar-link">1.2Java技术体系</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-3java发展史" class="sidebar-link">1.3Java发展史</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-4java虚拟机家族" class="sidebar-link">1.4Java虚拟机家族</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-5展望java技术的未来" class="sidebar-link">1.5展望Java技术的未来</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-6实战-自己编译jdk" class="sidebar-link">1.6实战:自己编译JDK</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_1-7本章小结" class="sidebar-link">1.7本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅第二部分-自动内存管理" class="sidebar-link">✅第二部分 自动内存管理</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第2章java内存区域与内存溢出异常" class="sidebar-link">第2章Java内存区域与内存溢出异常</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-1概述" class="sidebar-link">2.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-2运行时数据区域" class="sidebar-link">2.2运行时数据区域</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-2-4java堆" class="sidebar-link">2.2.4Java堆</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-2-5方法区" class="sidebar-link">2.2.5方法区</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-3hotspot虚拟机对象探秘" class="sidebar-link">2.3HotSpot虚拟机对象探秘</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-4实战-outofm-emory-error异常" class="sidebar-link">2.4实战:OutOfM emory Error异常</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_2-5本章小结" class="sidebar-link">2.5本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第3章垃圾收集器与内存分配策略" class="sidebar-link">第3章垃圾收集器与内存分配策略</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-1概述" class="sidebar-link">3.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-2对象已死" class="sidebar-link">3.2对象已死?</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-3垃圾收集算法" class="sidebar-link">3.3垃圾收集算法</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-4hotspot的算法细节实现" class="sidebar-link">3.4HotSpot的算法细节实现</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-5经典垃圾收集器" class="sidebar-link">3.5经典垃圾收集器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-6低延迟垃圾收集器" class="sidebar-link">3.6低延迟垃圾收集器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-7选择合适的垃圾收集器" class="sidebar-link">3.7选择合适的垃圾收集器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-8实战-内存分配与回收策略" class="sidebar-link">3.8实战:内存分配与回收策略</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_3-9本章小结" class="sidebar-link">3.9本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第4章虚拟机性能监控、故障处理工具" class="sidebar-link">第4章虚拟机性能监控、故障处理工具</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_4-1概述" class="sidebar-link">4.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_4-2基础故障处理工具" class="sidebar-link">4.2基础故障处理工具</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_4-3可视化故障处理工具" class="sidebar-link">4.3可视化故障处理工具</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_4-4-hotspot虚拟机插件及工具" class="sidebar-link">4.4 HotSpot虚拟机插件及工具</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_4-5本章小结" class="sidebar-link">4.5本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第5章调优案例分析与实战" class="sidebar-link">第5章调优案例分析与实战</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_5-1概述" class="sidebar-link">5.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_5-2案例分析" class="sidebar-link">5.2案例分析</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_5-3实战-eclipse运行速度调优" class="sidebar-link">5.3实战:Eclipse运行速度调优</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_5-4-本章小结" class="sidebar-link">5.4 本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅第三部分-虚拟机执行子系统" class="sidebar-link">✅第三部分 虚拟机执行子系统</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第6章类文件结构" class="sidebar-link">第6章类文件结构</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-1概述" class="sidebar-link">6.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-2无关性的基石" class="sidebar-link">6.2无关性的基石</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-3class类文件的结构" class="sidebar-link">6.3Class类文件的结构</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-4字节码指令简介" class="sidebar-link">6.4字节码指令简介</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-5公有设计，私有实现" class="sidebar-link">6.5公有设计，私有实现</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-6class文件结构的发展" class="sidebar-link">6.6Class文件结构的发展</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_6-7本章小结" class="sidebar-link">6.7本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第7章虚拟机类加载机制" class="sidebar-link">第7章虚拟机类加载机制</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-1概述" class="sidebar-link">7.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-2类加载的时机" class="sidebar-link">7.2类加载的时机</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-3类加载的过程" class="sidebar-link">7.3类加载的过程</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-4类加载器" class="sidebar-link">7.4类加载器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-5java模块化系统" class="sidebar-link">7.5Java模块化系统</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_7-6本章小结" class="sidebar-link">7.6本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第8章虚拟机字节码执行引擎" class="sidebar-link">第8章虚拟机字节码执行引擎</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-1概述" class="sidebar-link">8.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-2运行时栈帧结构" class="sidebar-link">8.2运行时栈帧结构</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-3方法调用" class="sidebar-link">8.3方法调用</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-4动态类型语言支持" class="sidebar-link">8.4动态类型语言支持</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-5基于栈的字节码解释执行引擎" class="sidebar-link">8.5基于栈的字节码解释执行引擎</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_8-6本章小结" class="sidebar-link">8.6本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第9章类加载及执行子系统的案例与实战" class="sidebar-link">第9章类加载及执行子系统的案例与实战</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_9-1概述" class="sidebar-link">9.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_9-2案例分析" class="sidebar-link">9.2案例分析</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_9-3-实战-自己动手实现远程执行功能" class="sidebar-link">9.3 实战:自己动手实现远程执行功能</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_9-4本章小结" class="sidebar-link">9.4本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅第四部分-程序编译与代码优化" class="sidebar-link">✅第四部分 程序编译与代码优化</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第10章前端编译与优化" class="sidebar-link">第10章前端编译与优化</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_10-1概述" class="sidebar-link">10.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_10-2javac编译器" class="sidebar-link">10.2Javac编译器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_10-3-java语法糖的味道" class="sidebar-link">10.3 Java语法糖的味道</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_10-4实战-插入式注解处理器" class="sidebar-link">10.4实战:插入式注解处理器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_10-5本章小结" class="sidebar-link">10.5本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第11章后端编译与优化" class="sidebar-link">第11章后端编译与优化</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-1概述" class="sidebar-link">11.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-2即时编译器" class="sidebar-link">11.2即时编译器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-3提前编译器" class="sidebar-link">11.3提前编译器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-4编译器优化技术" class="sidebar-link">11.4编译器优化技术</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-5实战-深入理解graal编译器" class="sidebar-link">11.5实战:深入理解Graal编译器</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_11-6本章小结" class="sidebar-link">11.6本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅第五部分高效并发" class="sidebar-link">✅第五部分高效并发</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第12章java内存模型与线程" class="sidebar-link">第12章Java内存模型与线程</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-1概述" class="sidebar-link">12.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-2硬件的效率与一致性" class="sidebar-link">12.2硬件的效率与一致性</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-3java内存模型" class="sidebar-link">12.3Java内存模型</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-4-java与线程" class="sidebar-link">12.4 Java与线程</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-5java与协程" class="sidebar-link">12.5Java与协程</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_12-6本章小结" class="sidebar-link">12.6本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#第13章-线程安全与锁优化" class="sidebar-link">第13章 线程安全与锁优化</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_13-1概述" class="sidebar-link">13.1概述</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_13-2线程安全" class="sidebar-link">13.2线程安全</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_13-3锁优化" class="sidebar-link">13.3锁优化</a></li><li class="sidebar-sub-header"><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#_13-4本章小结" class="sidebar-link">13.4本章小结</a></li></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#附录a―在windows系统下编译openjdk6" class="sidebar-link">附录A―在Windows系统下编译OpenJDK6</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#附录b展望java技术的未来（2013年版" class="sidebar-link">附录B展望Java技术的未来（2013年版)</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#附录c虚拟机字节码指令表" class="sidebar-link">附录C虚拟机字节码指令表</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#附录d对象查询语言（oql）简介附录ejdk历史版本轨迹" class="sidebar-link">附录D对象查询语言（OQL）简介附录EJDK历史版本轨迹</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#附录ejdk历史版本轨迹" class="sidebar-link">附录EJDK历史版本轨迹</a><ul class="sidebar-sub-headers"></ul></li><li><a href="/01.Language/Java/02.%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3Java%E8%99%9A%E6%8B%9F%E6%9C%BA.html#✅参考资料" class="sidebar-link">✅参考资料</a><ul class="sidebar-sub-headers"></ul></li></ul></div></li></ul> </div> <div class="page"> <div class="content"><h1 id="深入理解java虚拟机"><a href="#深入理解java虚拟机" class="header-anchor">#</a> 深入理解Java虚拟机</h1> <h2 id="目录"><a href="#目录" class="header-anchor">#</a> 目录</h2> <p>[TOC]</p> <h2 id="前言"><a href="#前言" class="header-anchor">#</a> 前言</h2> <ul><li>Java的技术体系主要由支撑Java程序运行的 虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架（如 Spring、MyBatis等）构成。</li> <li>在国内，有关Java类库API、Java语言语法及第三方框架的技术资料和书籍 非常丰富，相比而言，有关Java虚拟机的资料却显得异常贫乏。</li></ul> <p>本书一共分为五个部分：</p> <ul><li>走近Java</li> <li>自动内存管理</li> <li>虚拟机执行子系统</li> <li>程序编译与代码优化</li> <li>高效并发</li></ul> <p>各个部分之间基本上是互相独立的，没有必然的前后依赖关系，读者可以从任何一个感兴 趣的专题开始阅读，但是每个部分各个章节间则有先后顺序</p> <p>这里并没有假定所有读者都在Java领域具备特别专业的技术水平，因此会在保证逻辑完整、描述 准确的前提下，尽量用通俗的语言和案例去讲述虚拟机中与开发关系最为密切的内容。但是，本书毕 竟是在探讨虚拟机的工作原理，不可避免地需要读者有一定的技术基础，而且本书的读者定位是中、 高级程序员群体，对于一些常用的开发框架、Java类库API和Java语法等基础知识点，将假设读者已有 所了解。</p> <p>本书介绍的Java虚拟机并不局限于某一个特定发行商或者某一款特定虚拟机，只是由于 <code>OracleJDK/OpenJDK</code>在市场占有率上的绝对优势</p> <p>其中的HotSpot虚拟机不可避免地成为本书主要分析、讲解的对象，书中在涉及Java虚拟机自身实现相关的内容时，大多将以HotSpot虚拟机为目标对象 来进行讲解。但撰写本书的意图并不是去做HotSpot的源码导读或者解析，书中所讲述的内容多为Java 虚拟机的通用原理，即使读者使用了HotSpot之外的其他Java虚拟机实现，也会有所收获。</p> <ul><li>本书讲解中涉及JDK 7以前HotSpot虚拟机、JRockit虚拟机、WebLogic服务器等产品的所有者时， 仍然会使用BEA和Sun公司的名称，而不是Oracle。实际上BEA和Sun分别于2008年和2010年被Oracle公 司收购，现在已经不存在这两个商标了，但是它们毫无疑问都是在Java领域中做出过卓越贡献的、值 得程序员们纪念的先驱企业。</li></ul> <h2 id="✅第一部分-走近java"><a href="#✅第一部分-走近java" class="header-anchor">#</a> ✅第一部分 走近Java</h2> <h2 id="第1章走近java"><a href="#第1章走近java" class="header-anchor">#</a> 第1章走近Java</h2> <h3 id="_1-1概述"><a href="#_1-1概述" class="header-anchor">#</a> 1.1概述</h3> <h3 id="_1-2java技术体系"><a href="#_1-2java技术体系" class="header-anchor">#</a> 1.2Java技术体系</h3> <h3 id="_1-3java发展史"><a href="#_1-3java发展史" class="header-anchor">#</a> 1.3Java发展史</h3> <h3 id="_1-4java虚拟机家族"><a href="#_1-4java虚拟机家族" class="header-anchor">#</a> 1.4Java虚拟机家族</h3> <h4 id="_1-4-1虚拟机始祖-sun-classic-exact-vm"><a href="#_1-4-1虚拟机始祖-sun-classic-exact-vm" class="header-anchor">#</a> 1.4.1虚拟机始祖:Sun Classic/Exact VM</h4> <h4 id="_1-4-2武林盟主-hotspot-vm"><a href="#_1-4-2武林盟主-hotspot-vm" class="header-anchor">#</a> 1.4.2武林盟主:HotSpot VM</h4> <h4 id="_1-4-3小家碧玉-mobile-embedded-vm"><a href="#_1-4-3小家碧玉-mobile-embedded-vm" class="header-anchor">#</a> 1.4.3小家碧玉:Mobile/Embedded VM</h4> <h4 id="_1-4-4天下第二-bea-jrockit-ibmj9vm"><a href="#_1-4-4天下第二-bea-jrockit-ibmj9vm" class="header-anchor">#</a> 1.4.4天下第二:BEA JRockit/IBMJ9VM</h4> <h4 id="_1-4-5软硬合璧-bea-liquid-vm-azul-vm"><a href="#_1-4-5软硬合璧-bea-liquid-vm-azul-vm" class="header-anchor">#</a> 1.4.5软硬合璧:BEA Liquid VM/Azul VM</h4> <h4 id="_1-4-6挑战者-apache-harmony-google-android-dalvikvm"><a href="#_1-4-6挑战者-apache-harmony-google-android-dalvikvm" class="header-anchor">#</a> 1.4.6挑战者:Apache Harmony/Google Android DalvikVM</h4> <h4 id="_1-4-7-没有成功，但并非失败-microsoft-jvm及其他"><a href="#_1-4-7-没有成功，但并非失败-microsoft-jvm及其他" class="header-anchor">#</a> 1.4.7 没有成功，但并非失败: Microsoft JVM及其他</h4> <h4 id="_1-4-8百家争鸣"><a href="#_1-4-8百家争鸣" class="header-anchor">#</a> 1.4.8百家争鸣</h4> <h3 id="_1-5展望java技术的未来"><a href="#_1-5展望java技术的未来" class="header-anchor">#</a> 1.5展望Java技术的未来</h3> <h4 id="_1-5-1无语言倾向"><a href="#_1-5-1无语言倾向" class="header-anchor">#</a> 1.5.1无语言倾向</h4> <h4 id="_1-5-2新一代即时编译器"><a href="#_1-5-2新一代即时编译器" class="header-anchor">#</a> 1.5.2新一代即时编译器</h4> <h4 id="_1-5-3向native迈进"><a href="#_1-5-3向native迈进" class="header-anchor">#</a> 1.5.3向Native迈进</h4> <h4 id="_1-5-4-灵活的胖子"><a href="#_1-5-4-灵活的胖子" class="header-anchor">#</a> 1.5.4 灵活的胖子</h4> <h4 id="_1-5-5语言语法持续增强"><a href="#_1-5-5语言语法持续增强" class="header-anchor">#</a> 1.5.5语言语法持续增强</h4> <h3 id="_1-6实战-自己编译jdk"><a href="#_1-6实战-自己编译jdk" class="header-anchor">#</a> 1.6实战:自己编译JDK</h3> <h4 id="_1-6-1获取源码"><a href="#_1-6-1获取源码" class="header-anchor">#</a> 1.6.1获取源码</h4> <h4 id="_1-6-2系统需求"><a href="#_1-6-2系统需求" class="header-anchor">#</a> 1.6.2系统需求</h4> <h4 id="_1-6-3构建编译环境"><a href="#_1-6-3构建编译环境" class="header-anchor">#</a> 1.6.3构建编译环境</h4> <h4 id="_1-6-4进行编译"><a href="#_1-6-4进行编译" class="header-anchor">#</a> 1.6.4进行编译</h4> <h4 id="_1-6-5在ide工具中进行源码调试"><a href="#_1-6-5在ide工具中进行源码调试" class="header-anchor">#</a> 1.6.5在IDE工具中进行源码调试</h4> <h3 id="_1-7本章小结"><a href="#_1-7本章小结" class="header-anchor">#</a> 1.7本章小结</h3> <h2 id="✅第二部分-自动内存管理"><a href="#✅第二部分-自动内存管理" class="header-anchor">#</a> ✅第二部分 自动内存管理</h2> <h2 id="第2章java内存区域与内存溢出异常"><a href="#第2章java内存区域与内存溢出异常" class="header-anchor">#</a> 第2章Java内存区域与内存溢出异常</h2> <h3 id="_2-1概述"><a href="#_2-1概述" class="header-anchor">#</a> 2.1概述</h3> <h3 id="_2-2运行时数据区域"><a href="#_2-2运行时数据区域" class="header-anchor">#</a> 2.2运行时数据区域</h3> <h4 id="_2-2-1程序计数器"><a href="#_2-2-1程序计数器" class="header-anchor">#</a> 2.2.1程序计数器</h4> <h4 id="_2-2-2java虚拟机栈"><a href="#_2-2-2java虚拟机栈" class="header-anchor">#</a> 2.2.2Java虚拟机栈</h4> <h4 id="_2-2-3-本地方法栈"><a href="#_2-2-3-本地方法栈" class="header-anchor">#</a> 2.2.3 本地方法栈</h4> <h3 id="_2-2-4java堆"><a href="#_2-2-4java堆" class="header-anchor">#</a> 2.2.4Java堆</h3> <h3 id="_2-2-5方法区"><a href="#_2-2-5方法区" class="header-anchor">#</a> 2.2.5方法区</h3> <h4 id="_2-2-6运行时常量池"><a href="#_2-2-6运行时常量池" class="header-anchor">#</a> 2.2.6运行时常量池</h4> <h4 id="_2-2-7直接内存"><a href="#_2-2-7直接内存" class="header-anchor">#</a> 2.2.7直接内存</h4> <h3 id="_2-3hotspot虚拟机对象探秘"><a href="#_2-3hotspot虚拟机对象探秘" class="header-anchor">#</a> 2.3HotSpot虚拟机对象探秘</h3> <h4 id="_2-3-1对象的创建"><a href="#_2-3-1对象的创建" class="header-anchor">#</a> 2.3.1对象的创建</h4> <h4 id="_2-3-2对象的内存布局"><a href="#_2-3-2对象的内存布局" class="header-anchor">#</a> 2.3.2对象的内存布局</h4> <h4 id="_2-3-3对象的访问定位"><a href="#_2-3-3对象的访问定位" class="header-anchor">#</a> 2.3.3对象的访问定位</h4> <h3 id="_2-4实战-outofm-emory-error异常"><a href="#_2-4实战-outofm-emory-error异常" class="header-anchor">#</a> 2.4实战:OutOfM emory Error异常</h3> <h4 id="_2-4-1-java堆溢出"><a href="#_2-4-1-java堆溢出" class="header-anchor">#</a> 2.4.1 Java堆溢出</h4> <h4 id="_2-4-2虚拟机栈和本地方法栈溢出"><a href="#_2-4-2虚拟机栈和本地方法栈溢出" class="header-anchor">#</a> 2.4.2虚拟机栈和本地方法栈溢出</h4> <h4 id="_2-4-3方法区和运行时常量池溢出"><a href="#_2-4-3方法区和运行时常量池溢出" class="header-anchor">#</a> 2.4.3方法区和运行时常量池溢出</h4> <h4 id="_2-4-4-本机直接内存溢出"><a href="#_2-4-4-本机直接内存溢出" class="header-anchor">#</a> 2.4.4 本机直接内存溢出</h4> <h3 id="_2-5本章小结"><a href="#_2-5本章小结" class="header-anchor">#</a> 2.5本章小结</h3> <h2 id="第3章垃圾收集器与内存分配策略"><a href="#第3章垃圾收集器与内存分配策略" class="header-anchor">#</a> 第3章垃圾收集器与内存分配策略</h2> <h3 id="_3-1概述"><a href="#_3-1概述" class="header-anchor">#</a> 3.1概述</h3> <h3 id="_3-2对象已死"><a href="#_3-2对象已死" class="header-anchor">#</a> 3.2对象已死?</h3> <h4 id="_3-2-1引用计数算法"><a href="#_3-2-1引用计数算法" class="header-anchor">#</a> 3.2.1引用计数算法</h4> <h4 id="_3-2-2可达性分析算法"><a href="#_3-2-2可达性分析算法" class="header-anchor">#</a> 3.2.2可达性分析算法</h4> <h4 id="_3-2-3再谈引用"><a href="#_3-2-3再谈引用" class="header-anchor">#</a> 3.2.3再谈引用</h4> <h4 id="_3-2-4生存还是死亡"><a href="#_3-2-4生存还是死亡" class="header-anchor">#</a> 3.2.4生存还是死亡?</h4> <h4 id="_3-2-5回收方法区"><a href="#_3-2-5回收方法区" class="header-anchor">#</a> 3.2.5回收方法区</h4> <h3 id="_3-3垃圾收集算法"><a href="#_3-3垃圾收集算法" class="header-anchor">#</a> 3.3垃圾收集算法</h3> <h4 id="_3-3-1分代收集理论"><a href="#_3-3-1分代收集理论" class="header-anchor">#</a> 3.3.1分代收集理论</h4> <h4 id="_3-3-2标记-清除算法"><a href="#_3-3-2标记-清除算法" class="header-anchor">#</a> 3.3.2标记-清除算法</h4> <h4 id="_3-3-3标记-复制算法"><a href="#_3-3-3标记-复制算法" class="header-anchor">#</a> 3.3.3标记-复制算法</h4> <h4 id="_3-3-4-标记-整理算法"><a href="#_3-3-4-标记-整理算法" class="header-anchor">#</a> 3.3.4 标记-整理算法</h4> <h3 id="_3-4hotspot的算法细节实现"><a href="#_3-4hotspot的算法细节实现" class="header-anchor">#</a> 3.4HotSpot的算法细节实现</h3> <h4 id="_3-4-1根节点枚举"><a href="#_3-4-1根节点枚举" class="header-anchor">#</a> 3.4.1根节点枚举</h4> <h4 id="_3-4-2安全点"><a href="#_3-4-2安全点" class="header-anchor">#</a> 3.4.2安全点</h4> <h4 id="_3-4-3安全区域"><a href="#_3-4-3安全区域" class="header-anchor">#</a> 3.4.3安全区域</h4> <h4 id="_3-4-4记忆集与卡表"><a href="#_3-4-4记忆集与卡表" class="header-anchor">#</a> 3.4.4记忆集与卡表</h4> <h4 id="_3-4-5写屏障"><a href="#_3-4-5写屏障" class="header-anchor">#</a> 3.4.5写屏障</h4> <h4 id="_3-4-6并发的可达性分析"><a href="#_3-4-6并发的可达性分析" class="header-anchor">#</a> 3.4.6并发的可达性分析</h4> <h3 id="_3-5经典垃圾收集器"><a href="#_3-5经典垃圾收集器" class="header-anchor">#</a> 3.5经典垃圾收集器</h3> <h4 id="_3-5-1-serial收集器"><a href="#_3-5-1-serial收集器" class="header-anchor">#</a> 3.5.1 Serial收集器</h4> <h4 id="_3-5-2parnew收集器"><a href="#_3-5-2parnew收集器" class="header-anchor">#</a> 3.5.2ParNew收集器</h4> <h4 id="_3-5-3-parallel-scavenge收集器"><a href="#_3-5-3-parallel-scavenge收集器" class="header-anchor">#</a> 3.5.3 Parallel Scavenge收集器</h4> <h4 id="_3-5-4serial-old收集器"><a href="#_3-5-4serial-old收集器" class="header-anchor">#</a> 3.5.4Serial Old收集器</h4> <h4 id="_3-5-5-parallel-old收集器"><a href="#_3-5-5-parallel-old收集器" class="header-anchor">#</a> 3.5.5 Parallel Old收集器</h4> <h4 id="_3-5-6-cms收集器"><a href="#_3-5-6-cms收集器" class="header-anchor">#</a> 3.5.6 CMS收集器</h4> <h4 id="_3-5-7garbage-first收集器"><a href="#_3-5-7garbage-first收集器" class="header-anchor">#</a> 3.5.7Garbage First收集器</h4> <h3 id="_3-6低延迟垃圾收集器"><a href="#_3-6低延迟垃圾收集器" class="header-anchor">#</a> 3.6低延迟垃圾收集器</h3> <h4 id="_3-6-1-shenandoah收集器"><a href="#_3-6-1-shenandoah收集器" class="header-anchor">#</a> 3.6.1 Shenandoah收集器</h4> <h4 id="_3-6-2zgc收集器"><a href="#_3-6-2zgc收集器" class="header-anchor">#</a> 3.6.2ZGC收集器</h4> <h3 id="_3-7选择合适的垃圾收集器"><a href="#_3-7选择合适的垃圾收集器" class="header-anchor">#</a> 3.7选择合适的垃圾收集器</h3> <h4 id="_3-7-1-epsilon收集器"><a href="#_3-7-1-epsilon收集器" class="header-anchor">#</a> 3.7.1 Epsilon收集器</h4> <h4 id="_3-7-2收集器的权衡"><a href="#_3-7-2收集器的权衡" class="header-anchor">#</a> 3.7.2收集器的权衡</h4> <h4 id="_3-7-3虚拟机及垃圾收集器日志"><a href="#_3-7-3虚拟机及垃圾收集器日志" class="header-anchor">#</a> 3.7.3虚拟机及垃圾收集器日志</h4> <h4 id="_3-7-4垃圾收集器参数总结"><a href="#_3-7-4垃圾收集器参数总结" class="header-anchor">#</a> 3.7.4垃圾收集器参数总结</h4> <h3 id="_3-8实战-内存分配与回收策略"><a href="#_3-8实战-内存分配与回收策略" class="header-anchor">#</a> 3.8实战:内存分配与回收策略</h3> <h4 id="_3-8-1对象优先在eden分配"><a href="#_3-8-1对象优先在eden分配" class="header-anchor">#</a> 3.8.1对象优先在Eden分配</h4> <h4 id="_3-8-2-大对象直接进入老年代"><a href="#_3-8-2-大对象直接进入老年代" class="header-anchor">#</a> 3.8.2 大对象直接进入老年代</h4> <h4 id="_3-8-3长期存活的对象将进入老年代"><a href="#_3-8-3长期存活的对象将进入老年代" class="header-anchor">#</a> 3.8.3长期存活的对象将进入老年代</h4> <h4 id="_3-8-4动态对象年龄判定"><a href="#_3-8-4动态对象年龄判定" class="header-anchor">#</a> 3.8.4动态对象年龄判定</h4> <h4 id="_3-8-5-空间分配担保"><a href="#_3-8-5-空间分配担保" class="header-anchor">#</a> 3.8.5 空间分配担保</h4> <h3 id="_3-9本章小结"><a href="#_3-9本章小结" class="header-anchor">#</a> 3.9本章小结</h3> <h2 id="第4章虚拟机性能监控、故障处理工具"><a href="#第4章虚拟机性能监控、故障处理工具" class="header-anchor">#</a> 第4章虚拟机性能监控、故障处理工具</h2> <h3 id="_4-1概述"><a href="#_4-1概述" class="header-anchor">#</a> 4.1概述</h3> <h3 id="_4-2基础故障处理工具"><a href="#_4-2基础故障处理工具" class="header-anchor">#</a> 4.2基础故障处理工具</h3> <h4 id="_4-2-1jps-虚拟机进程状况工具"><a href="#_4-2-1jps-虚拟机进程状况工具" class="header-anchor">#</a> 4.2.1jps:虚拟机进程状况工具</h4> <h4 id="_4-2-2jstat-虚拟机统计信息监视工具"><a href="#_4-2-2jstat-虚拟机统计信息监视工具" class="header-anchor">#</a> 4.2.2jstat:虚拟机统计信息监视工具</h4> <h4 id="_4-2-3jinfo-java配置信息工具"><a href="#_4-2-3jinfo-java配置信息工具" class="header-anchor">#</a> 4.2.3jinfo: Java配置信息工具</h4> <h4 id="_4-2-4jmap-java内存映像工具"><a href="#_4-2-4jmap-java内存映像工具" class="header-anchor">#</a> 4.2.4jmap : Java内存映像工具</h4> <h4 id="_4-2-5jhat-虚拟机堆转储快照分析工具"><a href="#_4-2-5jhat-虚拟机堆转储快照分析工具" class="header-anchor">#</a> 4.2.5jhat:虚拟机堆转储快照分析工具</h4> <h4 id="_4-2-6jstack-java堆栈跟踪工具"><a href="#_4-2-6jstack-java堆栈跟踪工具" class="header-anchor">#</a> 4.2.6jstack: Java堆栈跟踪工具</h4> <h4 id="_4-2-7基础工具总结"><a href="#_4-2-7基础工具总结" class="header-anchor">#</a> 4.2.7基础工具总结</h4> <h3 id="_4-3可视化故障处理工具"><a href="#_4-3可视化故障处理工具" class="header-anchor">#</a> 4.3可视化故障处理工具</h3> <h4 id="_4-3-1jhsdb-基于服务性代理的调试工具"><a href="#_4-3-1jhsdb-基于服务性代理的调试工具" class="header-anchor">#</a> 4.3.1JHSDB:基于服务性代理的调试工具</h4> <h4 id="_4-3-2jconsole-java监视与管理控制台"><a href="#_4-3-2jconsole-java监视与管理控制台" class="header-anchor">#</a> 4.3.2JConsole: Java监视与管理控制台</h4> <h4 id="_4-3-3-visualvm-多合-故障处理工具"><a href="#_4-3-3-visualvm-多合-故障处理工具" class="header-anchor">#</a> 4.3.3 VisualVM:多合-故障处理工具</h4> <h4 id="_4-3-4java-m-ission-control-可持续在线的监控工具"><a href="#_4-3-4java-m-ission-control-可持续在线的监控工具" class="header-anchor">#</a> 4.3.4Java M ission Control:可持续在线的监控工具</h4> <h3 id="_4-4-hotspot虚拟机插件及工具"><a href="#_4-4-hotspot虚拟机插件及工具" class="header-anchor">#</a> 4.4 HotSpot虚拟机插件及工具</h3> <h3 id="_4-5本章小结"><a href="#_4-5本章小结" class="header-anchor">#</a> 4.5本章小结</h3> <h2 id="第5章调优案例分析与实战"><a href="#第5章调优案例分析与实战" class="header-anchor">#</a> 第5章调优案例分析与实战</h2> <h3 id="_5-1概述"><a href="#_5-1概述" class="header-anchor">#</a> 5.1概述</h3> <h3 id="_5-2案例分析"><a href="#_5-2案例分析" class="header-anchor">#</a> 5.2案例分析</h3> <h4 id="_5-2-1大内存硬件上的程序部署策略"><a href="#_5-2-1大内存硬件上的程序部署策略" class="header-anchor">#</a> 5.2.1大内存硬件上的程序部署策略</h4> <h4 id="_5-2-2集群间同步导致的内存溢出"><a href="#_5-2-2集群间同步导致的内存溢出" class="header-anchor">#</a> 5.2.2集群间同步导致的内存溢出</h4> <h4 id="_5-2-3堆外内存导致的溢出错误"><a href="#_5-2-3堆外内存导致的溢出错误" class="header-anchor">#</a> 5.2.3堆外内存导致的溢出错误</h4> <h4 id="_5-2-4外部命令导致系统缓慢"><a href="#_5-2-4外部命令导致系统缓慢" class="header-anchor">#</a> 5.2.4外部命令导致系统缓慢</h4> <h4 id="_5-2-5服务器虚拟机进程崩溃"><a href="#_5-2-5服务器虚拟机进程崩溃" class="header-anchor">#</a> 5.2.5服务器虚拟机进程崩溃</h4> <h4 id="_5-2-6不恰当数据结构导致内存占用过大"><a href="#_5-2-6不恰当数据结构导致内存占用过大" class="header-anchor">#</a> 5.2.6不恰当数据结构导致内存占用过大</h4> <h4 id="_5-2-7由windows虚拟内存导致的长时间停顿"><a href="#_5-2-7由windows虚拟内存导致的长时间停顿" class="header-anchor">#</a> 5.2.7由Windows虚拟内存导致的长时间停顿</h4> <h4 id="_5-2-8由安全点导致长时间停顿"><a href="#_5-2-8由安全点导致长时间停顿" class="header-anchor">#</a> 5.2.8由安全点导致长时间停顿</h4> <h3 id="_5-3实战-eclipse运行速度调优"><a href="#_5-3实战-eclipse运行速度调优" class="header-anchor">#</a> 5.3实战:Eclipse运行速度调优</h3> <h4 id="_5-3-1调优前的程序运行状态"><a href="#_5-3-1调优前的程序运行状态" class="header-anchor">#</a> 5.3.1调优前的程序运行状态</h4> <h4 id="_5-3-2升级jdk版本的性能变化及兼容问题"><a href="#_5-3-2升级jdk版本的性能变化及兼容问题" class="header-anchor">#</a> 5.3.2升级JDK版本的性能变化及兼容问题</h4> <h4 id="_5-3-3―编译时间和类加载时间的优化"><a href="#_5-3-3―编译时间和类加载时间的优化" class="header-anchor">#</a> 5.3.3―编译时间和类加载时间的优化</h4> <h4 id="_5-3-4调整内存设置控制垃圾收集频率"><a href="#_5-3-4调整内存设置控制垃圾收集频率" class="header-anchor">#</a> 5.3.4调整内存设置控制垃圾收集频率</h4> <h4 id="_5-3-5选择收集器降低延迟"><a href="#_5-3-5选择收集器降低延迟" class="header-anchor">#</a> 5.3.5选择收集器降低延迟</h4> <h3 id="_5-4-本章小结"><a href="#_5-4-本章小结" class="header-anchor">#</a> 5.4 本章小结</h3> <h2 id="✅第三部分-虚拟机执行子系统"><a href="#✅第三部分-虚拟机执行子系统" class="header-anchor">#</a> ✅第三部分 虚拟机执行子系统</h2> <h2 id="第6章类文件结构"><a href="#第6章类文件结构" class="header-anchor">#</a> 第6章类文件结构</h2> <h3 id="_6-1概述"><a href="#_6-1概述" class="header-anchor">#</a> 6.1概述</h3> <h3 id="_6-2无关性的基石"><a href="#_6-2无关性的基石" class="header-anchor">#</a> 6.2无关性的基石</h3> <h3 id="_6-3class类文件的结构"><a href="#_6-3class类文件的结构" class="header-anchor">#</a> 6.3Class类文件的结构</h3> <h4 id="_6-3-1魔数与class文件的版本"><a href="#_6-3-1魔数与class文件的版本" class="header-anchor">#</a> 6.3.1魔数与Class文件的版本</h4> <h4 id="_6-3-2常量池"><a href="#_6-3-2常量池" class="header-anchor">#</a> 6.3.2常量池</h4> <h4 id="_6-3-3访问标志"><a href="#_6-3-3访问标志" class="header-anchor">#</a> 6.3.3访问标志</h4> <h4 id="_6-3-4类索引、父类索引与接口索引集合"><a href="#_6-3-4类索引、父类索引与接口索引集合" class="header-anchor">#</a> 6.3.4类索引、父类索引与接口索引集合</h4> <h4 id="_6-3-5字段表集合"><a href="#_6-3-5字段表集合" class="header-anchor">#</a> 6.3.5字段表集合</h4> <h4 id="_6-3-6方法表集合"><a href="#_6-3-6方法表集合" class="header-anchor">#</a> 6.3.6方法表集合</h4> <h4 id="_6-3-7属性表集合"><a href="#_6-3-7属性表集合" class="header-anchor">#</a> 6.3.7属性表集合</h4> <h3 id="_6-4字节码指令简介"><a href="#_6-4字节码指令简介" class="header-anchor">#</a> 6.4字节码指令简介</h3> <h4 id="_6-4-1字节码与数据类型"><a href="#_6-4-1字节码与数据类型" class="header-anchor">#</a> 6.4.1字节码与数据类型</h4> <h4 id="_6-4-2加载和存储指令"><a href="#_6-4-2加载和存储指令" class="header-anchor">#</a> 6.4.2加载和存储指令</h4> <h4 id="_6-4-3运算指令"><a href="#_6-4-3运算指令" class="header-anchor">#</a> 6.4.3运算指令</h4> <h4 id="_6-4-4类型转换指令"><a href="#_6-4-4类型转换指令" class="header-anchor">#</a> 6.4.4类型转换指令</h4> <h4 id="_6-4-5对象创建与访问指令"><a href="#_6-4-5对象创建与访问指令" class="header-anchor">#</a> 6.4.5对象创建与访问指令</h4> <h4 id="_6-4-6操作数栈管理指令"><a href="#_6-4-6操作数栈管理指令" class="header-anchor">#</a> 6.4.6操作数栈管理指令</h4> <h4 id="_6-4-7控制转移指令"><a href="#_6-4-7控制转移指令" class="header-anchor">#</a> 6.4.7控制转移指令</h4> <h4 id="_6-4-8方法调用和返回指令"><a href="#_6-4-8方法调用和返回指令" class="header-anchor">#</a> 6.4.8方法调用和返回指令</h4> <h4 id="_6-4-9异常处理指令"><a href="#_6-4-9异常处理指令" class="header-anchor">#</a> 6.4.9异常处理指令</h4> <h4 id="_6-4-10同步指令"><a href="#_6-4-10同步指令" class="header-anchor">#</a> 6.4.10同步指令</h4> <h3 id="_6-5公有设计，私有实现"><a href="#_6-5公有设计，私有实现" class="header-anchor">#</a> 6.5公有设计，私有实现</h3> <h3 id="_6-6class文件结构的发展"><a href="#_6-6class文件结构的发展" class="header-anchor">#</a> 6.6Class文件结构的发展</h3> <h3 id="_6-7本章小结"><a href="#_6-7本章小结" class="header-anchor">#</a> 6.7本章小结</h3> <h2 id="第7章虚拟机类加载机制"><a href="#第7章虚拟机类加载机制" class="header-anchor">#</a> 第7章虚拟机类加载机制</h2> <h3 id="_7-1概述"><a href="#_7-1概述" class="header-anchor">#</a> 7.1概述</h3> <h3 id="_7-2类加载的时机"><a href="#_7-2类加载的时机" class="header-anchor">#</a> 7.2类加载的时机</h3> <h3 id="_7-3类加载的过程"><a href="#_7-3类加载的过程" class="header-anchor">#</a> 7.3类加载的过程</h3> <h4 id="_7-3-1加载"><a href="#_7-3-1加载" class="header-anchor">#</a> 7.3.1加载</h4> <h4 id="_7-3-2验证"><a href="#_7-3-2验证" class="header-anchor">#</a> 7.3.2验证</h4> <h4 id="_7-3-3-准备"><a href="#_7-3-3-准备" class="header-anchor">#</a> 7.3.3 准备</h4> <h4 id="_7-3-4解析"><a href="#_7-3-4解析" class="header-anchor">#</a> 7.3.4解析</h4> <h4 id="_7-3-5初始化"><a href="#_7-3-5初始化" class="header-anchor">#</a> 7.3.5初始化</h4> <h3 id="_7-4类加载器"><a href="#_7-4类加载器" class="header-anchor">#</a> 7.4类加载器</h3> <h4 id="_7-4-1类与类加载器"><a href="#_7-4-1类与类加载器" class="header-anchor">#</a> 7.4.1类与类加载器</h4> <h4 id="_7-4-2双亲委派模型"><a href="#_7-4-2双亲委派模型" class="header-anchor">#</a> 7.4.2双亲委派模型</h4> <h4 id="_7-4-3破坏双亲委派模型"><a href="#_7-4-3破坏双亲委派模型" class="header-anchor">#</a> 7.4.3破坏双亲委派模型</h4> <h3 id="_7-5java模块化系统"><a href="#_7-5java模块化系统" class="header-anchor">#</a> 7.5Java模块化系统</h3> <h4 id="_7-5-1-模块的兼容性"><a href="#_7-5-1-模块的兼容性" class="header-anchor">#</a> 7.5.1 模块的兼容性</h4> <h4 id="_7-5-2模块化下的类加载器"><a href="#_7-5-2模块化下的类加载器" class="header-anchor">#</a> 7.5.2模块化下的类加载器</h4> <h3 id="_7-6本章小结"><a href="#_7-6本章小结" class="header-anchor">#</a> 7.6本章小结</h3> <h2 id="第8章虚拟机字节码执行引擎"><a href="#第8章虚拟机字节码执行引擎" class="header-anchor">#</a> 第8章虚拟机字节码执行引擎</h2> <h3 id="_8-1概述"><a href="#_8-1概述" class="header-anchor">#</a> 8.1概述</h3> <h3 id="_8-2运行时栈帧结构"><a href="#_8-2运行时栈帧结构" class="header-anchor">#</a> 8.2运行时栈帧结构</h3> <h4 id="_8-2-1局部变量表"><a href="#_8-2-1局部变量表" class="header-anchor">#</a> 8.2.1局部变量表</h4> <h4 id="_8-2-2操作数栈"><a href="#_8-2-2操作数栈" class="header-anchor">#</a> 8.2.2操作数栈</h4> <h4 id="_8-2-3动态连接"><a href="#_8-2-3动态连接" class="header-anchor">#</a> 8.2.3动态连接</h4> <h4 id="_8-2-4方法返回地址"><a href="#_8-2-4方法返回地址" class="header-anchor">#</a> 8.2.4方法返回地址</h4> <h4 id="_8-2-5附加信息"><a href="#_8-2-5附加信息" class="header-anchor">#</a> 8.2.5附加信息</h4> <h3 id="_8-3方法调用"><a href="#_8-3方法调用" class="header-anchor">#</a> 8.3方法调用</h3> <h4 id="_8-3-1解析"><a href="#_8-3-1解析" class="header-anchor">#</a> 8.3.1解析</h4> <h4 id="_8-3-2分派"><a href="#_8-3-2分派" class="header-anchor">#</a> 8.3.2分派</h4> <h3 id="_8-4动态类型语言支持"><a href="#_8-4动态类型语言支持" class="header-anchor">#</a> 8.4动态类型语言支持</h3> <h4 id="_8-4-1动态类型语言"><a href="#_8-4-1动态类型语言" class="header-anchor">#</a> 8.4.1动态类型语言</h4> <h4 id="_8-4-2java与动态类型"><a href="#_8-4-2java与动态类型" class="header-anchor">#</a> 8.4.2Java与动态类型</h4> <h4 id="_8-4-3java-lang-invoke包"><a href="#_8-4-3java-lang-invoke包" class="header-anchor">#</a> 8.4.3java.lang. invoke包</h4> <h4 id="_8-4-4-invokedy-namic指令"><a href="#_8-4-4-invokedy-namic指令" class="header-anchor">#</a> 8.4.4 invokedy namic指令</h4> <h4 id="_8-4-5实战-掌控方法分派规则"><a href="#_8-4-5实战-掌控方法分派规则" class="header-anchor">#</a> 8.4.5实战:掌控方法分派规则</h4> <h3 id="_8-5基于栈的字节码解释执行引擎"><a href="#_8-5基于栈的字节码解释执行引擎" class="header-anchor">#</a> 8.5基于栈的字节码解释执行引擎</h3> <h4 id="_8-5-1-解释执行"><a href="#_8-5-1-解释执行" class="header-anchor">#</a> 8.5.1 解释执行</h4> <h4 id="_8-5-2基于栈的指令集与基于寄存器的指令集"><a href="#_8-5-2基于栈的指令集与基于寄存器的指令集" class="header-anchor">#</a> 8.5.2基于栈的指令集与基于寄存器的指令集</h4> <h4 id="_8-5-3基于栈的解释器执行过程"><a href="#_8-5-3基于栈的解释器执行过程" class="header-anchor">#</a> 8.5.3基于栈的解释器执行过程</h4> <h3 id="_8-6本章小结"><a href="#_8-6本章小结" class="header-anchor">#</a> 8.6本章小结</h3> <h2 id="第9章类加载及执行子系统的案例与实战"><a href="#第9章类加载及执行子系统的案例与实战" class="header-anchor">#</a> 第9章类加载及执行子系统的案例与实战</h2> <h3 id="_9-1概述"><a href="#_9-1概述" class="header-anchor">#</a> 9.1概述</h3> <h3 id="_9-2案例分析"><a href="#_9-2案例分析" class="header-anchor">#</a> 9.2案例分析</h3> <h4 id="_9-2-1-tomcat-正统的类加载器架构"><a href="#_9-2-1-tomcat-正统的类加载器架构" class="header-anchor">#</a> 9.2.1 Tomcat:正统的类加载器架构</h4> <h4 id="_9-2-2-osgi-灵活的类加载器架构"><a href="#_9-2-2-osgi-灵活的类加载器架构" class="header-anchor">#</a> 9.2.2 OSGi:灵活的类加载器架构</h4> <h4 id="_9-2-3字节码生成技术与动态代理的实现"><a href="#_9-2-3字节码生成技术与动态代理的实现" class="header-anchor">#</a> 9.2.3字节码生成技术与动态代理的实现</h4> <h4 id="_9-2-4-backport工具-java的时光机器"><a href="#_9-2-4-backport工具-java的时光机器" class="header-anchor">#</a> 9.2.4 Backport工具:Java的时光机器</h4> <h3 id="_9-3-实战-自己动手实现远程执行功能"><a href="#_9-3-实战-自己动手实现远程执行功能" class="header-anchor">#</a> 9.3 实战:自己动手实现远程执行功能</h3> <h4 id="_9-3-1目标"><a href="#_9-3-1目标" class="header-anchor">#</a> 9.3.1目标</h4> <h4 id="_9-3-2思路"><a href="#_9-3-2思路" class="header-anchor">#</a> 9.3.2思路</h4> <h4 id="_9-3-3实现"><a href="#_9-3-3实现" class="header-anchor">#</a> 9.3.3实现</h4> <h4 id="_9-3-4验证"><a href="#_9-3-4验证" class="header-anchor">#</a> 9.3.4验证</h4> <h3 id="_9-4本章小结"><a href="#_9-4本章小结" class="header-anchor">#</a> 9.4本章小结</h3> <h2 id="✅第四部分-程序编译与代码优化"><a href="#✅第四部分-程序编译与代码优化" class="header-anchor">#</a> ✅第四部分 程序编译与代码优化</h2> <h2 id="第10章前端编译与优化"><a href="#第10章前端编译与优化" class="header-anchor">#</a> 第10章前端编译与优化</h2> <h3 id="_10-1概述"><a href="#_10-1概述" class="header-anchor">#</a> 10.1概述</h3> <h3 id="_10-2javac编译器"><a href="#_10-2javac编译器" class="header-anchor">#</a> 10.2Javac编译器</h3> <h4 id="_10-2-1-javac的源码与调试"><a href="#_10-2-1-javac的源码与调试" class="header-anchor">#</a> 10.2.1 Javac的源码与调试</h4> <h4 id="_10-2-2解析与填充符号表"><a href="#_10-2-2解析与填充符号表" class="header-anchor">#</a> 10.2.2解析与填充符号表</h4> <h4 id="_10-2-3-注解处理器"><a href="#_10-2-3-注解处理器" class="header-anchor">#</a> 10.2.3 注解处理器</h4> <h4 id="_10-2-4-语义分析与字节码生成"><a href="#_10-2-4-语义分析与字节码生成" class="header-anchor">#</a> 10.2.4 语义分析与字节码生成</h4> <h3 id="_10-3-java语法糖的味道"><a href="#_10-3-java语法糖的味道" class="header-anchor">#</a> 10.3 Java语法糖的味道</h3> <h4 id="_10-3-1泛型"><a href="#_10-3-1泛型" class="header-anchor">#</a> 10.3.1泛型</h4> <h4 id="_10-3-2自动装箱、拆箱与遍历循环"><a href="#_10-3-2自动装箱、拆箱与遍历循环" class="header-anchor">#</a> 10.3.2自动装箱、拆箱与遍历循环</h4> <h4 id="_10-3-3条件编译"><a href="#_10-3-3条件编译" class="header-anchor">#</a> 10.3.3条件编译</h4> <h3 id="_10-4实战-插入式注解处理器"><a href="#_10-4实战-插入式注解处理器" class="header-anchor">#</a> 10.4实战:插入式注解处理器</h3> <h4 id="_10-4-1实战目标"><a href="#_10-4-1实战目标" class="header-anchor">#</a> 10.4.1实战目标</h4> <h4 id="_10-4-2代码实现"><a href="#_10-4-2代码实现" class="header-anchor">#</a> 10.4.2代码实现</h4> <h4 id="_10-4-3运行与测试"><a href="#_10-4-3运行与测试" class="header-anchor">#</a> 10.4.3运行与测试</h4> <h4 id="_10-4-4其他应用案例"><a href="#_10-4-4其他应用案例" class="header-anchor">#</a> 10.4.4其他应用案例</h4> <h3 id="_10-5本章小结"><a href="#_10-5本章小结" class="header-anchor">#</a> 10.5本章小结</h3> <h2 id="第11章后端编译与优化"><a href="#第11章后端编译与优化" class="header-anchor">#</a> 第11章后端编译与优化</h2> <h3 id="_11-1概述"><a href="#_11-1概述" class="header-anchor">#</a> 11.1概述</h3> <h3 id="_11-2即时编译器"><a href="#_11-2即时编译器" class="header-anchor">#</a> 11.2即时编译器</h3> <h4 id="_11-2-1-解释器与编译器"><a href="#_11-2-1-解释器与编译器" class="header-anchor">#</a> 11.2.1 解释器与编译器</h4> <h4 id="_11-2-2编译对象与触发条件"><a href="#_11-2-2编译对象与触发条件" class="header-anchor">#</a> 11.2.2编译对象与触发条件</h4> <h4 id="_11-2-3编译过程"><a href="#_11-2-3编译过程" class="header-anchor">#</a> 11.2.3编译过程</h4> <h4 id="_11-2-4实战-查看及分析即时编译结果"><a href="#_11-2-4实战-查看及分析即时编译结果" class="header-anchor">#</a> 11.2.4实战:查看及分析即时编译结果</h4> <h3 id="_11-3提前编译器"><a href="#_11-3提前编译器" class="header-anchor">#</a> 11.3提前编译器</h3> <h4 id="_11-3-1提前编译的优劣得失"><a href="#_11-3-1提前编译的优劣得失" class="header-anchor">#</a> 11.3.1提前编译的优劣得失</h4> <h4 id="_11-3-2实战-jaotc的提前编译"><a href="#_11-3-2实战-jaotc的提前编译" class="header-anchor">#</a> 11.3.2实战:Jaotc的提前编译</h4> <h3 id="_11-4编译器优化技术"><a href="#_11-4编译器优化技术" class="header-anchor">#</a> 11.4编译器优化技术</h3> <h4 id="_11-4-1优化技术概览"><a href="#_11-4-1优化技术概览" class="header-anchor">#</a> 11.4.1优化技术概览</h4> <h4 id="_11-4-2方法内联"><a href="#_11-4-2方法内联" class="header-anchor">#</a> 11.4.2方法内联</h4> <h4 id="_11-4-3逃逸分析"><a href="#_11-4-3逃逸分析" class="header-anchor">#</a> 11.4.3逃逸分析</h4> <h4 id="_11-4-4公共子表达式消除"><a href="#_11-4-4公共子表达式消除" class="header-anchor">#</a> 11.4.4公共子表达式消除</h4> <h4 id="_11-4-5数组边界检查消除"><a href="#_11-4-5数组边界检查消除" class="header-anchor">#</a> 11.4.5数组边界检查消除</h4> <h3 id="_11-5实战-深入理解graal编译器"><a href="#_11-5实战-深入理解graal编译器" class="header-anchor">#</a> 11.5实战:深入理解Graal编译器</h3> <h4 id="_11-5-1历史背景"><a href="#_11-5-1历史背景" class="header-anchor">#</a> 11.5.1历史背景</h4> <h4 id="_11-5-2构建编译调试环境"><a href="#_11-5-2构建编译调试环境" class="header-anchor">#</a> 11.5.2构建编译调试环境</h4> <h4 id="_11-5-3jvmci编译器接口"><a href="#_11-5-3jvmci编译器接口" class="header-anchor">#</a> 11.5.3JVMCI编译器接口</h4> <h4 id="_11-5-4代码中间表示"><a href="#_11-5-4代码中间表示" class="header-anchor">#</a> 11.5.4代码中间表示</h4> <h4 id="_11-5-5代码优化与生成"><a href="#_11-5-5代码优化与生成" class="header-anchor">#</a> 11.5.5代码优化与生成</h4> <h3 id="_11-6本章小结"><a href="#_11-6本章小结" class="header-anchor">#</a> 11.6本章小结</h3> <h2 id="✅第五部分高效并发"><a href="#✅第五部分高效并发" class="header-anchor">#</a> ✅第五部分高效并发</h2> <h3 id="第12章java内存模型与线程"><a href="#第12章java内存模型与线程" class="header-anchor">#</a> 第12章Java内存模型与线程</h3> <h3 id="_12-1概述"><a href="#_12-1概述" class="header-anchor">#</a> 12.1概述</h3> <h3 id="_12-2硬件的效率与一致性"><a href="#_12-2硬件的效率与一致性" class="header-anchor">#</a> 12.2硬件的效率与一致性</h3> <h3 id="_12-3java内存模型"><a href="#_12-3java内存模型" class="header-anchor">#</a> 12.3Java内存模型</h3> <h4 id="_12-3-1主内存与工作内存"><a href="#_12-3-1主内存与工作内存" class="header-anchor">#</a> 12.3.1主内存与工作内存</h4> <h4 id="_12-3-2内存间交互操作"><a href="#_12-3-2内存间交互操作" class="header-anchor">#</a> 12.3.2内存间交互操作</h4> <h4 id="_12-3-3-对于volatile型变量的特殊规则"><a href="#_12-3-3-对于volatile型变量的特殊规则" class="header-anchor">#</a> 12.3.3 对于volatile型变量的特殊规则</h4> <h4 id="_12-3-4针对long和double型变量的特殊规则"><a href="#_12-3-4针对long和double型变量的特殊规则" class="header-anchor">#</a> 12.3.4针对long和double型变量的特殊规则</h4> <h4 id="_12-3-5原子性、可见性与有序性"><a href="#_12-3-5原子性、可见性与有序性" class="header-anchor">#</a> 12.3.5原子性、可见性与有序性</h4> <h4 id="_12-3-6先行发生原则"><a href="#_12-3-6先行发生原则" class="header-anchor">#</a> 12.3.6先行发生原则</h4> <h3 id="_12-4-java与线程"><a href="#_12-4-java与线程" class="header-anchor">#</a> 12.4 Java与线程</h3> <h4 id="_12-4-1线程的实现"><a href="#_12-4-1线程的实现" class="header-anchor">#</a> 12.4.1线程的实现</h4> <h4 id="_12-4-2java线程调度"><a href="#_12-4-2java线程调度" class="header-anchor">#</a> 12.4.2Java线程调度</h4> <h4 id="_12-4-3状态转换"><a href="#_12-4-3状态转换" class="header-anchor">#</a> 12.4.3状态转换</h4> <h3 id="_12-5java与协程"><a href="#_12-5java与协程" class="header-anchor">#</a> 12.5Java与协程</h3> <h4 id="_12-5-1内核线程的局限"><a href="#_12-5-1内核线程的局限" class="header-anchor">#</a> 12.5.1内核线程的局限</h4> <h4 id="_12-5-2协程的复苏"><a href="#_12-5-2协程的复苏" class="header-anchor">#</a> 12.5.2协程的复苏</h4> <h4 id="_12-5-3-java的解决方案"><a href="#_12-5-3-java的解决方案" class="header-anchor">#</a> 12.5.3 Java的解决方案</h4> <h3 id="_12-6本章小结"><a href="#_12-6本章小结" class="header-anchor">#</a> 12.6本章小结</h3> <h2 id="第13章-线程安全与锁优化"><a href="#第13章-线程安全与锁优化" class="header-anchor">#</a> 第13章 线程安全与锁优化</h2> <h3 id="_13-1概述"><a href="#_13-1概述" class="header-anchor">#</a> 13.1概述</h3> <h3 id="_13-2线程安全"><a href="#_13-2线程安全" class="header-anchor">#</a> 13.2线程安全</h3> <h4 id="_13-2-1-java语言中的线程安全"><a href="#_13-2-1-java语言中的线程安全" class="header-anchor">#</a> 13.2.1 Java语言中的线程安全</h4> <h4 id="_13-2-2线程安全的实现方法"><a href="#_13-2-2线程安全的实现方法" class="header-anchor">#</a> 13.2.2线程安全的实现方法</h4> <h3 id="_13-3锁优化"><a href="#_13-3锁优化" class="header-anchor">#</a> 13.3锁优化</h3> <h4 id="_13-3-1自旋锁与自适应自旋"><a href="#_13-3-1自旋锁与自适应自旋" class="header-anchor">#</a> 13.3.1自旋锁与自适应自旋</h4> <h4 id="_13-3-2锁消除"><a href="#_13-3-2锁消除" class="header-anchor">#</a> 13.3.2锁消除</h4> <h4 id="_13-3-3-锁粗化"><a href="#_13-3-3-锁粗化" class="header-anchor">#</a> 13.3.3 锁粗化</h4> <h4 id="_13-3-4轻量级锁"><a href="#_13-3-4轻量级锁" class="header-anchor">#</a> 13.3.4轻量级锁</h4> <h4 id="_13-3-5偏向锁"><a href="#_13-3-5偏向锁" class="header-anchor">#</a> 13.3.5偏向锁</h4> <h3 id="_13-4本章小结"><a href="#_13-4本章小结" class="header-anchor">#</a> 13.4本章小结</h3> <h2 id="附录a―在windows系统下编译openjdk6"><a href="#附录a―在windows系统下编译openjdk6" class="header-anchor">#</a> 附录A―在Windows系统下编译OpenJDK6</h2> <h2 id="附录b展望java技术的未来（2013年版"><a href="#附录b展望java技术的未来（2013年版" class="header-anchor">#</a> 附录B展望Java技术的未来（2013年版)</h2> <h2 id="附录c虚拟机字节码指令表"><a href="#附录c虚拟机字节码指令表" class="header-anchor">#</a> 附录C虚拟机字节码指令表</h2> <h2 id="附录d对象查询语言（oql）简介附录ejdk历史版本轨迹"><a href="#附录d对象查询语言（oql）简介附录ejdk历史版本轨迹" class="header-anchor">#</a> 附录D对象查询语言（OQL）简介附录EJDK历史版本轨迹</h2> <h2 id="附录ejdk历史版本轨迹"><a href="#附录ejdk历史版本轨迹" class="header-anchor">#</a> 附录EJDK历史版本轨迹</h2> <h2 id="✅参考资料"><a href="#✅参考资料" class="header-anchor">#</a> ✅参考资料</h2> <ul><li>深入理解Java虚拟机：JVM高级特性与最佳实践（第3版）周志明著</li> <li>（Understand the JVM Advanced Features and Best Practices , Third Edition）</li></ul></div> <div class="page-edit"><!----> <!----></div> <!----> </div> <!----></div></div>
    <script src="/assets/js/app.c70e21ad.js" defer></script><script src="/assets/js/35.dbe688bb.js" defer></script>
  </body>
</html>
